package com.example.code2022;

import java.util.*;

/**
 * @author: dangwen
 * @createDate: 2022/4/22
 * 989. 数组形式的整数加法
 * 整数的 数组形式  num 是按照从左到右的顺序表示其数字的数组。
 * 例如，对于 num = 1321 ，数组形式是 [1,3,2,1] 。
 * 给定 num ，整数的 数组形式 ，和整数 k ，返回 整数 num + k 的 数组形式 。
 */
public class P989 {
    public static void main(String[] args) {
        int[] nums = new int[]{1,2,0,0};
        System.out.println(arrayPlus(nums,34));
        for (int i = 0; i < 5; ++i){
            System.out.println(i);
        }
    }

    public static List<Integer> arrayPlus(int[] nums, int k){
        List<Integer> list = new ArrayList<>();
        int length = nums.length - 1;
        int carry = 0;
        while (length >= 0 || k > 0){
            int paramA = nums[length];
            int paramB = k%10;
            int sum = carry + paramA + paramB;
            list.add(sum % 10);
            carry = sum / 10;
            length--;
            k = k / 10;
        }
        if (carry != 0){
            list.add(carry);
        }
        Collections.reverse(list);
        return list;
    }

    public static List<Integer> addToArrayForm(int[] num, int k) {
        List<Integer> res = new ArrayList<Integer>();
        int n = num.length;
        for (int i = n - 1; i >= 0 || k > 0; --i, k /= 10) {
            if (i >= 0) {
                k += num[i];
            }
            res.add(k % 10);
        }
        Collections.reverse(res);
        return res;
    }
}
